package cn.supermarket.mapper;

import cn.supermarket.pojo.entity.Payment;
import cn.supermarket.pojo.vo.PaymentDetailsVO;
import cn.supermarket.pojo.vo.PaymentPlainVO;
import cn.supermarket.pojo.vo.RetailPlainVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.time.LocalDateTime;
import java.util.List;

@Repository
public interface PaymentMapper {
    /**
     * 插入收付款记录
     * @param payment 收付款信息
     */
    void addNewPayment(Payment payment);

    /**
     * 根据id修改是否可见
     *
     * @param id    收款id
     * @param isDisplay 商品是否可见,0是可见,1是不可见
     * @return 返回受影响的行数
     */
    int updateIsDisplay(@Param("id") Long id, @Param("isDisplay") Integer isDisplay);

    /**
     * 根据id修改是作废
     *
     * @param id    收款id
     * @return 返回受影响的行数
     */
    int updateIsCancel(Long id);
    /**
     * 根据id修改最后操作时间
     *
     * @param id    收款id
     * @param lastUpdateTime 最后修改时间
     * @return 返回受影响的行数
     */
    int updateLastUpdateTime(@Param("id") Long id, @Param("lastUpdateTime") LocalDateTime lastUpdateTime);

    /**
     * 根据id修改备注
     *
     * @param id    收款id
     * @param other 商品备注
     * @return 返回受影响的行数
     */
    int updateOther(@Param("id") Long id, @Param("other") String other);

    /**
     * 根据id查询
     * @param id 收款id
     * @return 简单的付款信息
     */
    PaymentPlainVO getId(@Param("id") Long id);

    /**
     * 根据订单号查询
     * @param orderNumber 订单号
     * @return 返回付款记录详细信息
     */
    PaymentDetailsVO getOrderNumber(String orderNumber);

    /**
     * 根据日期查询
     * @param start 开始日期
     * @param end 结束日期
     * @return 返回一个详细信息结合
     */
    List<PaymentDetailsVO> getData(LocalDateTime start, LocalDateTime end);

    /**
     * 根据收款方查询
     * @param payee 收款方
     * @return
     */
    List<PaymentDetailsVO> getPayee(String payee);

    /**
     * 根据付款方查询
     * @param payer 付款方
     * @return
     */
    List<PaymentDetailsVO> getPayer(String payer);

    /**
     * 修改审批人
     * @param handler 审批人
     * @return 返回成功的行数
     */
    int updateHandler(String handler,Long id);

}
